package com.jt.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;
/*
该vo对象是系统返回值VO对象 主要包含三个属性
1、设定状态码 200表示执行成功 201表示执行失败 认为定义的(和浏览器没关系)业务定义.
2、定义返回值信息 服务器可能会给用户一些提示信息. 例如 执行成功，用户名或密码错误等.
3、定义返回值对象 服务器在后端处理完成业务之后，将对象返回给前端.
 */
@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class SysResult implements Serializable {
    private static final long serialVersionUID = -2398047844798686980L;

    /*
     * 策略说明:
     * 		属性1: status==200 调用正确 status==201 调用失败
     * 		属性2: msg 提交服务器相关说明信息
     * 		属性3: data 服务器返回页面的业务数据 一般都是对象的JSON.
     */
    private Integer status; //200成功   201失败
    private String msg;     //服务器提示信息
    private Object data;    //服务器返回前端的业务数据

    //准备工具API 方便用户使用
    public static SysResult fail(){
        return new SysResult(201,"业务调用失败！",null);
    }

    //成功方式1 只返回状态码信息
    public static SysResult success(){
        return new SysResult(200,"业务调用成功！",null);
    }

    //成功方式2 需要返回服务器数据 data
    //注意事项:写工具API方法时切记方法重载时千万不要耦合
    public static SysResult success(Object data){
        return new SysResult(200,"业务调用成功！",data);
    }

    //成功方式3  可能告知服务器信息及 服务器数据
    public static SysResult success(String msg,Object data){
        return new SysResult(200,msg,data);
    }
}
